html updates
[clinton/website/site/unknownlamer.org.git] / Site Software.html
1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml">
5 <head>
6 <title>Site Software</title>
7 <meta name="generator" content="muse.el" />
8 <meta http-equiv="Content-Type"
9 content="text/html; charset=utf-8" />
10 <link href="http://feeds.unknownlamer.org/rss/site-updates"
11 rel="alternate" type="application/rss+xml" title="Updates Feed" />
12
13 <link rel="stylesheet" href="default.css" />
14 </head>
15 <body>
16 <h1>Site Software</h1>
17 <div class="contents">
18 <dl>
19 <dt>
20 <a href="#sec1">Basic Setup</a>
21 </dt>
22 <dt>
23 <a href="#sec2">Scripts</a>
24 </dt>
25 <dd>
26 <dl>
27 <dt>
28 <a href="#sec3">Book Database</a>
29 </dt>
30 <dt>
31 <a href="#sec4">RSS Feed</a>
32 </dt>
33 </dl>
34 </dd>
35 <dt>
36 <a href="#sec5">License</a>
37 </dt>
38 </dl>
39 </div>
40
41
42 <!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a>
43 Basic Setup</h2>
44
45 <p class="first">I work on the static content of the site using <a href="http://mwolson.org/projects/EmacsMuse.html">Emacs Muse</a>. My muse
46 configuration is pretty long and available in my
47 <a href="http://unknownlamer.org/darcsweb/browse?r=site-emacs;a=headblob;f=/init.d/muse.el">site-emacs repository</a>. The site itself exists in a <a href="http://unknownlamer.org/darcsweb/browse?r=unknownlamer.org;a=summary">darcs repository</a>
48 which is a fork of the source repository I edit locally&mdash;the source
49 repository contains muse/image files while the site repository
50 contains html updates as a separate series of patches.</p>
51
52 <p>This provides a very nice editing environment and makes publishing
53 fairly easy&mdash;I push edits from my laptop to my workstation and then
54 off to <a href="http://hcoop.net">HCoop</a> with the html updates. Almost no effort is spent dealing
55 with some dumb web interface or other pointless things making it much
56 easier for me to just write things and toss them up onto the web.</p>
57
58
59 <h2><a name="sec2" id="sec2"></a>
60 Scripts</h2>
61
62 <p class="first">There are a few scripts and templates in the <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=summary">darcsweb::site-support</a>
63 repository that I use to update the
64 site. <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/update.sh">darcsweb::site-support/update.sh</a> automates the process of
65 sending patches off to the server via afs.</p>
66
67 <h3><a name="sec3" id="sec3"></a>
68 Book Database</h3>
69
70 <p><a href="Book%20List.html">Book List</a> is autogenerated by <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/books.lisp">darcsweb::site-support/books.lisp</a> which
71 reads a template and a small sexp <em>database</em> of book entries and spits
72 out a muse file which is not kept under VC. This works well for me
73 currently, but I intend to eventually <em>upgrade</em> this simple system to an
74 <a href="http://common-lisp.net/project/elephant/">Elephant</a> object database with a <a href="http://common-lisp.net/project/mcclim/">CLIM</a> frontend for editing
75 entries. I'll probably end up writing a minimal database manager for
76 the sexp based system first.</p>
77
78
79 <h3><a name="sec4" id="sec4"></a>
80 RSS Feed</h3>
81
82 <p class="first">The site rss feed is generated by <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/rss.lisp">darcsweb::site-support/rss.lisp</a>. It
83 fetches the darcs xml changelog for interesting files and then spits
84 out a tolerable feed with automagically generated links from <code>*.muse</code> to
85 <code>*.html</code>. A <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/update-rss-binary">dumped binary</a> is run from a darcs hook on the main
86 repository that handily updates the feed whenever I commit.</p>
87
88 <p><code>apply posthook update-site-rss
89 apply run-posthook</code></p>
90
91 <p>Boring old Apache is used to serve up the generated feed. The feed
92 stays updated when I update, and Apache deals with properly letting
93 readers know when the file last changed and whatnot.</p>
94
95
96
97 <h2><a name="sec5" id="sec5"></a>
98 License</h2>
99
100 <p class="first">All of the scripts used to generate the site are in the public domain
101 unless otherwise mentioned in the files themselves. To use them
102 anywhere else would require modification, but a few chunks of code
103 could be generally useful for other things.</p>
104
105
106 <!-- Page published by Emacs Muse ends here -->
107
108 <p class="cke-buttons">
109 <!-- validating badges, any browser, etc -->
110 <a href="http://validator.w3.org/check/referer"><img
111 src="http://www.w3.org/Icons/valid-xhtml10"
112 alt="Valid XHTML 1.0!" /></a>
113
114 <a href="http://www.anybrowser.org/campaign/"><img
115 src="img/buttons/w3c_ab.png" alt="[ Viewable With Any Browser
116 ]" /></a>
117
118 <a href="http://www.debian.org/"><img
119 src="img/buttons/debian.png" alt="[ Powered by Debian ]" /></a>
120
121 <a href="http://hcoop.net/">
122 <img src="img/buttons/hcoop.png"
123 alt="[ Hosted by HCoop]" />
124 </a>
125
126 <a href="http://www.fsf.org/register_form?referrer=114">
127 <img src="img/buttons/fsf_member.png"
128 alt="[ FSF Associate Member ]" />
129 </a>
130 </p>
131
132 <p class="cke-footer"> It's no contest, but we still race there
133 Like the saintly tortoise and the godless hare
134 </p>
135 <p class="cke-timestamp">Last Modified:
136 September 28, 2008</p>
137 </body>
138 </html>